namespace NetFx.MSIL
{
  using System;
  using System.Collections.Generic;
  using System.Text;
  using System.Reflection;
  using System.Reflection.Emit;

  public class ArrayShapeSignature : Signature
  {
    #region Statics
    public static ArrayShapeSignature of(int rank, int[] sizes, int[] lowBounds)
    {
      return new ArrayShapeSignature(rank, sizes, lowBounds);
    }
    #endregion
    #region Fields
    protected int rank = 0;
    protected int[] sizes = new int[0];
    protected int[] lowBounds = new int[0];
    #endregion
    #region Properties
    public virtual int Rank
    {
      get
      {
        return this.rank;
      }
    }
    public virtual int[] Sizes
    {
      get
      {
        return this.sizes;
      }
    }
    public virtual int[] LowBounds
    {
      get
      {
        return this.lowBounds;
      }
    }
    #endregion
    #region Constructors
    public ArrayShapeSignature(int rank, int[] sizes, int[] lowBounds)
    {
      this.rank = rank;
      this.sizes = sizes;
      this.lowBounds = lowBounds;
    }
    #endregion
  }

}
